home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-07-29 | 30.2 KB | 908 lines | [TEXT/CWIE] |
- ========================================================================
- Metrowerks MSL 2.4.8 Pro3 Patch Release Notes
- ========================================================================
-
- Version: Metrowerks CodeWarrior 2.4.8, Pro3 Patch
- Date: July 28, 1998
- Authors: Vicki Scott, Michael Marcotty, Matt Fassiotto, Ron Liechty,
- Howard Hinnant
-
- ========================================================================
-
- ========================================================================
- New Features in This Version
- ========================================================================
-
- * __MSL__ identifier is 0x2408. This release is known as the Pro3 Patch.
-
- * __MSL_FIX_ITERATORS__ has been removed! The compiler now fixes
- partial template specializations (be sure and read the compiler
- release notes for restrictions, however). This means you no longer
- need this hack in your code anymore. See notes below for how to
- remove this from your code - there is a trick that you have to be
- aware of.
-
- * <locale> has been completely rewritten to improve speed and size
- of compilation. See notes below for variances from the Standard.
-
- * slist and hash have been fixed
-
- * auto_ptr is implemented to the Nov 97 Standard now
-
- * <bitset> now uses only one bit per bool instead of one byte
-
- * <algorithm> has been rewritten to fix quite a few bugs and some
- gain in performance and correctness of functions
-
- * mem_fun classes now implemented
-
-
- ========================================================================
- Reported Bugs From MSL 2.4.6 (MPTP Release) Fixed in This Version
- ========================================================================
-
- * Fixed the problem with multiple includes of <cassert> or assert.h
-
- * Fixed the problem with OLDROUTINENAMES define
-
- * Fixed the problem with std:: in size_t and offsetof macros
-
- * Fixed problem with POSIX definition of fdopen
-
- * Fixed open flags for win32 files to not truncate files when opening
-
- * Fixed project files for x86 to include the relative path names
-
- * Added the "sys" directory and moved stat.h to it so that x86 files
- who look for <sys\stat.h> can now find it
-
- * Moved stroul syntax and stroud syntax files to a new folder called
- "MSL Technical Notes" and restored their contents (missing since
- Pro 1)
-
- * Fixed SIOUX project files on Mac to not include the prefix file
-
- ========================================================================
- Reported Bugs Fixed in This Version
- ========================================================================
-
- * MW00042 (Mac)
- The definition of O_RDWR in the ANSI header fcntl.h is now defined as
- 0x01, instead of 0x0.
-
- * MW00225 (Mac)
- Fixes the inadvertant release of a shared resource prior to when it
- should be released.
-
- * MW00288 (x86)
- Fixes a problem with exit code on Windows' platforms.
-
- * MW00294 (Mac)
- Fixes a problem following aliases
-
- * MW00427
- Fixes specializations in valarray
-
- * MW00445 (Mac, x86 still needs to be fixed)
- Fixes a problem with trying to seek past EOF
-
- * MW00456 (Mac)
- Fixes a problem with renaming directories
-
- * MW01597 (x86)
- Fixes a problem with renaming "open" to "_open"
-
- * MW01813 (Mac/PPC)
- Fixes a one-off bug in strstr when null is part of the pattern
-
- * MW02103
- MW06325
- The speed and size requirements (too slow, too big) have been fixed
- in <locale> in the C++ library. It no longer takes >64K memory nor
- half and hour to compile locimp.cpp
-
- * MW02520
- Fixes string I/O alignment in C++
-
- * MW02557
- removed the Win32 SDK header x86_prefix.h from MSL. We now
- use the one provided with the SDK.
-
- * MW02625
- Fixes a problem with memchr and __memrchr for characters > 0x80
-
- * MW02733
- Fixes a problem with state bit when fflush is called
-
- * MW02910
- Fixes character output alignment in C++
-
- * MW03236
- Fixes the search algorithm in <algorithm> to be more efficient
-
- * MW03272
- Fixes a bug in fread when a file contains fewer bytes than
- requested
-
- * MW03278 (mac)
- Fixes a cosmetic bug in SIOUX
-
- * MW03295 (mac)
- Fixes a bug in FSp_fopen with _fcreator and _ftype
-
- * MW05946
- Fixes a bug in getting memory for a error warning during
- an exception
-
- * MW06295
- Fixes bug when trying to print a long long cast to an int
-
- * MW06496
- Fixes a bug with strftime incorrectly returning zero
-
- * MW06626
- Fixes a bug in setw when temporary string is destructed
- leaving a dangling pointer
-
- * MW07009 (x86)
- Fixes a bug in WinSIOUX when passing arguments to main
-
- * MW07031
- Fixes a bug in SIOUX WASTE with data type too small for
- possible values
-
- * unix headers stat.h/fcntl.h/unistd.h were not including the
- correct version header file because __dest_os was not defined.
-
-
- ==============================================================
- Math bugs fixed in this release
- ==============================================================
-
- * MW01251
- fabs crashes under CFM-68K
-
- * MW01298
- __float_min etc. have been removed from float.c. Standard
- constants such as FLT_MI,FLT_MAX are now translated by the
- compiler at compile time.
-
- * MW02445
- precision of printing doubles was incorrect even when values
- are exact(eg. ints). the module ansi_fpx86.obj replaces
- ansi_fp_x86.c on INTEL.
-
- * MW07091
- could not reproduce this, but the implementation of complex
- log10 was inefficient. We now multiply by a constant instead
- of a function call/divide. this should be fixed.
-
- * fmin/fmax/fdim
- now are strictly compliant with C9X
-
- * complex abs/sqrt
- were not working for large values or values near 0.
- using hypot instead of sqrt(x*x + y*y) instead.
-
-
- ==============================================================
- The following user reported bugs were fixed in Pro3, but were
- not mentioned in the Pro3 Release Notes:
- ==============================================================
-
- * MW00102
- SIOUXSetTitle
-
- * MW00222
- gratuitous warning messages
-
- * MW00319
- memory leaks in streams
-
- * MW00376
- exception safe uninitialized_fill
-
- * MW00427
- brain dead valarray
-
- * MW00451
- string exposed refcounted implementation
-
- * MW00593
- mutable bug in auto_ptr
-
- * MW00622
- sputbackc
-
- * MW00767
- string::operator[] fixed
-
- * MW00805
- exception saftey of entire lib, esp. vector::op=
-
- * MW00827
- explicit facet constructor
-
- * MW01254
- problem with vector.h --> insert
-
- * MW01279
- what() in exception is redeclared
-
- * MW01300
- mode_t defined twice
-
- * MW01321
- fseek and DOS line endings
-
- * MW02075
- problem with first arg to multimap being const
-
- * MW02345
- better <limits>
-
- * MW02522
- destructor problems for const objects in vector
-
- * MW02531
- string::find
-
- * MW02709
- brain dead valarray
-
- * MW02729
- headers don't pass check syntax
-
- * MW02783
- isnan macro bug
-
- * MW02789
- more valarray problems fixed
-
- * MW02848
- bug in hash_table::iterator::operator =()
-
- * MW02948
- abs added to cmath
-
- * MW02949
- missing size() in valarray
-
- * MW02964
- missing wchar functions
-
- * MW03156
- poor bad_alloc design
-
- * MW03455
- missing operator-> on iterators
-
- * MW05605
- incorrect complex::atan2
-
- * MW05846
- printing \r
-
- * MW05968
- problem in map.h trying to access deallocated memory
-
- * MW06626
- a locale problem
-
-
- ========================================================================
- Known Bugs and Incompatibilities
- ========================================================================
-
- * multibyte routines not implemented - we may have an alpha version
- ready by Pro4
-
- * wide character support in C++ is unsupported in this release, but it
- should be ready by Pro4
-
- * MW02614
- MW02687
- On 68K for 8-byte doubles, using function pointers to ANSI math
- functions do not work.
-
- * MW01261
- Precision of printing doubles is incorrect even when values are
- exact (e.g., int).
-
- * MW02521 (mac)
- Conflict with order of includes for Types.h and mcompile.h
-
- * MW02761 (x86)
- Problem with _access if path is a directory
-
- * MW03025 (mac)
- SIOUX WASTE project file needs addition settings to build optimally
-
- * MW07513
- long double math functions do not work on PPC. The problem
- is that prototypes instead of macros are in cmath. We do
- not support the 128 bit long double data type on the PPC,
- so the return values of these functions are not properly
- coerced into IEEE 64 bit doubles. a work around is to
- have a macro that maps to the appropriate double version
- of the function(i.e. #define tanl tan).
-
- * MW02614/MW02687/MW01266
- on 68K for 8 byte doubles, functions pointers to
- ANSI math functions do not work.
-
- * MW02914/MW06751
- math.h/fp.h conflicts on 68K when including HyperXcmd.h
- (In general, math.h and fp.h conflict on 68K). This should
- be fixed in the next drop of Apple's universal headers.
-
- * MW03454/MW05701
- strtod/sscanf produce results off by a factor of 10
- on only 68K.
-
- * MW07337
- feature not yet added. standard api's atof() and sscanf do
- not yet implement the C9X extension which requires these
- to recognize the strings NAN and INF as input values.
-
-
- ========================================================================
- Additional Notes
- ========================================================================
-
- Disclaimer:
-
- This library represents a major step forward in providing fully Standard
- compliant C and C++ libraries. We strongly desire to be responsive to
- users' requests and needs; however, our position is that we uphold and
- implement the Standards behavior in both the C and C++ libraries. If a
- behavior was provided by MSL but goes against the Standard, we reserve
- the right to modify the behavior to comply fully with the Standard. If,
- however, a behavior is unspecified or not specifically forbidden by the
- Standard, we will continue to support it in the library. We reserve the
- right to use our discretion in implementing non-standard and
- non-specified C and C++ library behavior.
-
- ===================================================================
- * C++ Library Update
- ===================================================================
-
-
- General Comments
- ----------------
-
- The battle with overly used inline continues. Much of the library has
- been fixed in this respect, but there is still a ways to go.
-
- Fixing the implicit conversion warnings continues. Much progress
- has been made, but there is still more work to do.
-
- <algorithm>
- -----------
-
- The implementation of many methods has been simplified without
- changing the actual algorithms used. Inline depth has been reduced,
- and readability increased.
-
- Several methods used opertor!= on their template parameters. This bug
- has been corrected to use operator== instead. Affected methods include:
- find, search, search_n, remove_copy and unique_copy.
-
- An algorithmic bug was fixed in find_end.
-
- Return type of generate_n changed from OutputIterator to void in
- compliance with the standard.
-
- reverse algorithm changed to that suggested by the standard.
-
- Added a random access iterator specialization to partition.
-
- Added exception saftey to stable_partition.
-
- Rewrote sort to simplify and achieve a 10% to 15% speed increase.
-
- Rewrote stable_sort. It now is exception safe and gets the right
- answer.
-
- Rewrote the heap functions for a modest performance improvement.
-
- <bitset>
- --------
-
- Rewrote class to only use 1 bit per bool, as opposed to 1 byte as
- implemented previously.
-
- <fstream>
- ---------
-
- Minor changes in the construction of the fstream classes which removes
- duplicated work, and eliminates a memory leak.
-
- <functional>
- ------------
-
- Simplified implementation of the arithmetic, comparison and logical
- operators to increase readability.
-
- Rewrote mem_fun classes and functions.
-
- <ios>
- -----
-
- Altered ios_base in such a way that its default constructor does not
- touch any memory. This is key in getting the standard streams (cin,
- cout, etc.) to be functional before and after main, and at the same
- time, not leak memory.
-
- Modified the default constructor of basic_ios for the same reasons as
- mentioned above for ios_base.
-
- Added a _SaveFlags class that saves the flags of a ios_base. This is
- used in <locale> to temporarily change the flags of a stream in an
- exception safe manner.
-
- <iostream>
- ----------
-
- Put the static ios_base::Init object back in this header (it was
- moved from here in Pro3). It was moved out to help stop a memory leak
- associated with the standard streams. The stream classes have been
- modified now to not leak, even with the Init object back in this
- header. Having the Init object in this header is key to getting the
- standard streams to be functional before and after main.
-
- <istream>
- ---------
-
- Removed #include <extmath.h>. It was not needed, and was causing a
- conflict with assert.
-
- A default constructor was added to aid in the construction of the
- standard streams in a non-leaking manner.
-
- Corrected the basic_istream constructor which takes a streambuf
- pointer. This not only made the class more standard, but corrected a
- problem with user-defined classes derived from istream.
-
- basic_iostream constructor modifed so that ios_base::init() is called
- only once. This stops a memory leak.
-
- <iterator>
- ----------
-
- Added a standard partial specialization to iterator_traits:
- template <class T> struct iterator_traits <const T*>
-
- Added the macro #define __MSL_FIX_ITERATORS__(myType) for when
- MSIPL_PARTIAL_SPECIALIZATION is defined (partial template
- specialization support). This macro is meant to define away code
- which was previously needed to work around lack of partial template
- specialization support. Unfortunately the old __MSL_FIX_ITERATORS__
- macro did not include a trailing ';', thus forcing users to add one.
- Now when MSIPL_PARTIAL_SPECIALIZATION is turned on, the trailing ';'
- that users had to add will still be there, possibly in a place that
- the compiler doesn't appreciate. Such ';' must be manually deleted
- by the user at each use. The version of the __MSL_FIX_ITERATORS__
- macro that is active when MSIPL_PARTIAL_SPECIALIZATION is not defined
- has been modified to include the trailing ';'. Thus, once the user
- removes the trailing ';' from each use of the __MSL_FIX_ITERATORS__
- macro, MSIPL_PARTIAL_SPECIALIZATION can be turned on and off with
- ease. Sorry for the inconvenience.
-
- To summarize, in your code change
- __MSL_FIX_ITERATORS__(MyClass);
- to
- __MSL_FIX_ITERATORS__(MyClass)
-
- This macro will not be required for your classes with partial template
- compiler support. At the time of this writing, it is not certain if
- new compilers will be released simultaneously with this library.
-
- The distance() method has been simplified.
-
- reverse_iterator was rewritten without mutex. mutex is too expensive
- to burden such a light weight object with. reverse_iterators passed
- by value to multiple threads will maintain their integrity. However,
- the object that they refer to will have to be properly mutex'ed by the
- user. This design insures that you only pay for mutex when you need
- it.
-
- Rewrote istream_iterator for several reasons: 1. It mistakenly
- referred to cin. 2. It had a mutex object. 3. It had a bool data
- member that was unnecessary (this should be a very light weight
- object).
-
- Removed copy constructor and destructor from ostream_iterator. The
- compiler generated versions work just fine, and the result is a class
- that the compiler has an easier time inlining.
-
- Rewrote istreambuf_iterator for modest performance gains.
-
- <limits>
- --------
-
- Changed #include <wchar.h> to <cwchar>. Silly bug!
-
- Removed previous implementation which was in comments.
-
- <locale>
- --------
-
- Rewrote. The new version fixes many bugs. Most notably, the C++
- library will now compile with much less ram and cpu.
-
- There is a performance / functionality tradeoff that can be controlled
- by the user via #define flags in <mcompile.h>. The tradeoff stems
- from the fact that most of the code in <locale> lives under templated
- virtual methods. With current compiler technology, templates with
- virtual methods are completely instantiated if an instance of that
- class template is constructed. This adds up to a lot of code that is
- instantiated, but will often never be used.
-
- Metrowerks is working on both library and compiler technology to
- optimize away this problem. In the mean-time we offer some low-tech
- options to save both code size, and library compile time:
-
- The virtual key word can be easily turned on and off for each
- individual facet class in <locale>. When all facets have virtual
- methods, this is standard. Turning off the virtualness of a facet's
- methods means that you will not be able to derive from a facet and
- thus alter I/O behavior.
-
- There is a group of facets that have "punct" in their name:
- numpunct, moneypunct, and timepunct (timepunct is non-standard).
- These facets are very small (in code), but offer tremendous
- flexibility in the custimization of I/O. With these classes one can
- alter the placment of commas for grouping digits (thousands
- seperators), or even change what character is used. The decimal point
- character can also be modified. Even the character strings that
- represent true and false can be changed.
-
- A good performance / functionality tradeoff is to make only the
- "punct" facets virtual. This can easily be done by
- #define _ONLY_VIRTUAL_PUNCTS
- in <mcompile.h>. In fact this is the default state of the C++ libs
- that we will ship.
-
- Also in <mcompile.h> you will notice two other
- flags that are commented out:
- // #define _NO_VIRTUAL_FACETS
- // #define _CUSTOM_VIRTUAL_FACETS
-
- If you wish no facets to have virtual methods, then comment out
- _ONLY_VIRTUAL_PUNCTS, and uncomment _NO_VIRTUAL_FACETS.
-
- If you with to define precisely which facets have virtual methods then
- use the _CUSTOM_VIRTUAL_FACETS flag, and then modify <locale> at line
- 71 to specify which facets you want virtual methods turned off. The
- macro magic there ought to be clear for those wishing to travel down
- this road.
-
- For a completely standard lib (all facets have virtual methods) then
- comment out all three flags (_ONLY_VIRTUAL_PUNCTS, _NO_VIRTUAL_FACETS
- and _CUSTOM_VIRTUAL_FACETS) in <mcompile.h>.
-
- As mentioned above, a non-standard class has been added:
-
- template <class charT>
- class timepunct
- : public locale::facet
- {
- public:
- explicit timepunct(size_t refs = 0);
- const charT* weekday_name(size_t d) const;
- const charT* month_name(size_t m) const;
- const charT* am_pm(int hour) const;
- protected:
- timepunct();
- virtual const charT* do_weekday_name(size_t d) const;
- virtual const charT* do_month_name(size_t m) const;
- virtual const charT* do_am_pm(int hour) const;
- };
-
- This class can be overridden so that the standard time_put and
- time_get work with user defined character strings to represent the
- names of the months (which default to "January", "February", ...),
- the days of the week (which default to "Sunday", "Monday", ...), and
- the am/pm designator (which defaults to "am", "pm").
-
- To create your own timepunct class you must derive it from
- std::template <class charT> class _Generic_timepunct. I reccommend
- that you copy the implementation for template <> class
- timepunct<char>.
-
- <mcompile.h>
- ------------
-
- In addition to the flags mentioned under locale section, the flag
- MSIPL_PARTIAL_SPECIALIZATION has been added. This flag controls
- whether or not the library is expecting the compiler to support
- partial template specialization.
-
- The flag _WIN32 has been added to the Windows platform.
-
- The macro MSIPLSTD was changed from std to ::std.
-
- <memory>
- --------
-
- get_temporary_buffer was rewritten. It used to use a preallocated
- buffer when the size of the requested memory was small enough. This
- has been changed to just use new because of concerns in a multi-
- threaded environment.
-
- A non-standard class has been added: template <class T> class _TempVec.
- This creates an array of T by using get_temporary_buffer, and
- initializes it with a user supplied value. The for reason this class is
- to facilitate the use of get_temporary_buffer in an exception-safe
- manner. This class is used in <algorithm>.
-
- There is a new auto_ptr in the Nov' 97 standard (which unfortunately
- is not public). The best public information I know of on this subject
- can be found at http://www.dejanews.com/ (search for auto_ptr). The
- main change in auto_ptr is that when the class relenquishes ownership
- of its pointer, it sets itself to null. The Dec. '96 auto_ptr has
- been left in <memory>, but commented out. If you require the '96
- behavior, then simply comment out the '97 version, and uncomment the
- '96 version.
-
- <new>
- -----
-
- References to DebugNew have been deleted. This does not imply a lack
- of support for this utility. Indeed, look forward to increased
- support in this area!
-
- <ostream>
- ---------
-
- A default constructor was added to aid in the construction of the
- standard streams in a non-leaking manner.
-
- Corrected the basic_istream constructor which takes a streambuf
- pointer. This not only made the class more standard, but corrected a
- problem with user-defined classes derived from istream.
-
- Formatting of char output has been corrected (now obeys width and
- justification).
-
- Output of char* has been rewritten to take advantage of the new
- locale. There is however, no change in functionality.
-
- The exception behavior of the formatted output operators has been
- modified. Unfortunately a bug still lurks here. If an exception is
- thrown, then the method should set badbit and rethrow the exception.
- Instead, badbit is left unset. This is a known bug and will be fixed
- in the next release.
-
- <string>
- --------
-
- Fixed a bug in char_traits<char>::find related to char's greater than
- 127.
-
- Removed default argument from
- iterator string::insert(iterator, char)
- per the standard.
-
- Changed string output to respect stream width and justification.
- This is non-standard behavior, but I believe that the standard is in
- error (a type-o of a single word: smaller was written when larger meant).
- If the standard is strictly interpreted, then os << string;
- should produce no output at all! (That is, for the common case of
- os.width() == 0).
-
- <vector>
- --------
-
- Reduced inline depth of serveral iterator operations.
-
-
- ===================================================================
- * MSL C Source File Updates
- ===================================================================
-
-
- * ansi_parms.h
- C compiler flags have moved from <ansi_parms.h> to
- <ansi_prefix.xxx.h>, where xxx is mac or Win32.
-
- * file_io.mac.c
- path2fss.c
- Changes to allow the renaming of directories. MW00456
-
- * scanf.c
- Modification to allow characters >= 128, e.g. fl or ä to be matched
- from format string correctly. MW06720
-
- * SIOUX.c
- Fix to insert linefeed to make the sequence \b\n work correctly.
-
- Fix the enter key work as return on input from keyboards where
- the virtual key code is 0x34 as well for keyboards with an enter
- key virtual key code of 0x4c. MW06775
-
- * SIOUXWindows.c
- Removed two ReleaseResource statements that released a shared
- resource, causing possible crashes in other applications. MW00225
-
- * fcntl.mac.h
- fcntl.mac.c
- fcntl.win32.h
- Changes to the value of O_RDWR so that it has a non-zero value.
- MW00042.
-
- * unistd.mac.c
- Fix to lseek for case where it is used to seek beyond EOF to
- extend the file. MW00445 (I don't believe lseek implemented
- on Windows yet.)
-
- * file_io.mac.c
- Change to allow an alias file name to be resolved. MW00294
-
- * mem.c
- Change to allow memchr to work on the PPC for characters of
- value > 127. MW02625
-
- * console_io.mac.c
- SIOUX.h
- SIOUX.c
- Changes to implement clrscr, for which there was a declaration
- in console.h but no code.
-
- * ansi_files.c
- Change to allow error-free linking in case where _No_Console is
- defined. MW07076, MW06847
-
- * file_io.c
- The C Standard does not specify any action for fflush() on a
- stream opened for read only. As it stood, our implementation
- caused the buffer to be reloaded. This change turns fflush()
- into a no-op if the file is opened for read. MW02733
-
- * time.c
- Corrected strftime to return the correct number of characters
- written and make proper check to avoid target string overrun.
- MW06496
-
- * SIOUXGlobals.c
- SIOUXGlobals.h
- Changes to make SIOUX_WASTE work properly for files greater
- than 32k. MW07031
-
- * utime.win32.h
- Change to reintroduce #include <winsock.h> eliminated earlier.
- This include is required and has been requested again from a
- user. However, this leads to redeclaration warning messages
- during the building of the library due to the way that the
- Microsoft headers (which we can't change) have been written.
-
- * fcntl.win32.h
- fnctl.win32.c
- Changes to remove #defines of open, creat, fcntl to _open,
- _creat, and _fcntl.
-
- * unistd.win32.h
- unistd.win32.c
- Changes to revert _lseek, _read, _write, _access, _close,
- _unlink, _rmdir, _chdir, _getcwd to lseek, read, write, access,
- close etc. while accommodating legacy code.
-
-
- ===================================================================
- * WinSIOUX in MSL 2.4 (Pro 3), Updates for Pro3 Patch
- ===================================================================
-
- The Mac SIOUX-like project is now available for Windows. This means
- that a new console window for WIN32 applications is available that
- permitssaving stdout to a file, printing it from a menu option, and
- includes ascroll bar. A new stationary on the windows platforms is
- included, named WinSIOUX. You will not get the standard DOS/NT console
- if you use this stationary. The remaining functions from SIOUX will be
- included in future releases (for example, cut and paste, selecting font,
- and opening/closing files from the menu).
-
- The following has been added to the Pro3 Patch:
-
- * The addition of an Edit Menu with active items of Copy, Cut
- Paste and Select All.
-
- * Keyboard shortcuts for menu items. Note that, during keyboard
- input to stdin or cin, the keyboard shortcuts are not available
- and the corresponding menu items must be used.
-
- * Caret control both through the keyboard (arrow keys) and the
- mouse.
-
- * The ability to select parts of the file with the mouse.
-
- * The ability to print just specific pages selected during the
- print dialog.
-
- * During keyboard input to stdin or cin, ctrl+D and ctrl+Z both
- serve as end-of-file markers. There is no way to clear this
- marker once it has been set.
-
- * While the program is running, Ctrl-C acts as a keyboard interrupt
- that can be handled by a user specified handler. If no handler is
- provided by the user, the default handler will terminate the program.
- When there parts of the file have been selected as under 4 above,
- Ctrl-C still acts as a keyboard shortcut for Copy.
-
- * Added proper handling of argv and argc variable length argument
- lists.
-
- * The size of the console window can now be adjusted with the mouse in
- the bottom right corner and the display of long lines of text will be
- adjusted accordingly.
-
-
-
- ===================================================================
- Miscellaneous Notes
- ===================================================================
-
- * Precompiled header stationary sets precompiled headers to 4i-8d.
- When using precompiled headers built from the stationary, please
- ensure that the libraries you include in your project are also 4i-8d.
- If changing the precompiled headers preferences panels, please ensure
- that you build the associated libraries you plan to use with the same
- options. A "#pragma check_header_flags" has been added to MSL.pch++
- to help check for these types of errors.
-
- * Improved clock for Mac platforms
- To increase the tick count for the Mac platforms in order to use the
- facilities the Operating System provides, please change the following
- file:
- Metrowerks Standard Library/MSL C/MSL Mac/Public Includes/
- timesize.mac.h
- This file introduces a define (__TIMESIZE_DOUBLE) which enables the
- improved clock code in time.h and time.mac.c. Please note that the
- clock_t typedef will change from an unsigned long to a type double.
- This also means that the clock function will change types. Be sure
- you confirm in your code base that your return values are typed
- accordingly for clock and clock_t.
-
- * Multi-target project files. You will see new project files with the
- string MTrg included in the project name. This means that the project
- file can emit all targets from that single file, depending on your
- selection when you open the project file and choose a target. However,
- it takes more time to open the multi-target project files. This was
- done for the windows platforms because scripting is not available in
- the IDE on windows.
-
- * Console applications for windows projects now stop before exiting so
- that output can be viewed. This feature can be turned off by setting
- the preprocessor macro STOP_PROGRAM_BEFORE_EXIT in the windows
- prefix file, ansi_prefix.win32.h. Be sure to rebuild MSL C after
- making this change. Please note that if you redirect output to a
- serial device (such as a printer), you must still press enter to
- exit the program.
-
- * There is a vbscript script in the "Metrowerks Standard Library"
- directory that rebuilds the precompiled header files, the win32
- runtime, and all MSL libraries. Read the information at the top of
- the script file "msl_build.vbs" if you have problems running the
- script. The file "msl_list" in the same directory can be configured
- to build exactly those libraries you wish to build. If errors occur
- while building, they are logged in the file "error.log" in the
- "Metrowerks Standard Library" directory.
-
-
- ========================================================================
- Contacting Metrowerks
- ========================================================================
-
- For bug reports, technical questions, and suggestions, please use the
- forms in the Release Notes folder on the CD, and send them to
-
- support@metrowerks.com
-
- See the CodeWarrior on the Nets document in the Release Notes folder for
- more contact information, including a list of Internet newsgroups,
- online services, and patch and update sites.
-
- ========================================================================
-
- Metrowerks Corporation
-